using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class TerritorioManagerScript : MonoBehaviour {
	
	private Dictionary<Continente, int> continenteMaioria = new Dictionary<Continente, int>();
	private Dictionary<Continente, int> continenteTotalidade = new Dictionary<Continente, int>();
	
	public GameObject exercitoPrefab;
	
	public void Start() {
		
		continenteMaioria.Add(Continente.AFRICA,  4);
		continenteMaioria.Add(Continente.AMERICA_NORTE,  5);
		continenteMaioria.Add(Continente.AMERICA_SUL,  3);
		continenteMaioria.Add(Continente.ASIA,  7);
		continenteMaioria.Add(Continente.EUROPA,  4);
		continenteMaioria.Add(Continente.OCEANIA,  3);
		
		continenteTotalidade.Add(Continente.AFRICA,  6);
		continenteTotalidade.Add(Continente.AMERICA_NORTE,  10);
		continenteTotalidade.Add(Continente.AMERICA_SUL,  4);
		continenteTotalidade.Add(Continente.ASIA,  12);
		continenteTotalidade.Add(Continente.EUROPA,  7);
		continenteTotalidade.Add(Continente.OCEANIA,  4);	

	}	

	public void addExercito(GameObject territorio, int quantidade) {
	
		Territorio territorioScript = (Territorio) territorio.GetComponent("Territorio");
		territorioScript.addExercito(quantidade);
		
		Instantiate(this.exercitoPrefab, territorio.transform.position, Quaternion.identity);
		
		Debug.Log(quantidade.ToString() + " exercito(os) adicionado ao territorio " + territorioScript.nomeTerritorio);
	}

	
	private int conteTerritoriosPorContinente (Jogador jogador, Continente continente)
	{
		int quantidadeTerritorios = 0;
		
		foreach (GameObject territorio in jogador.Territorios) {
			
			if (((Territorio)territorio.GetComponent("Territorio")).continente == continente) {
				quantidadeTerritorios++;
			}			
		}
		
		return quantidadeTerritorios;
	}
	
	
	public bool possuiMaioria(Jogador jogador, Continente continente) {
		
		bool result = false;
		
		int quantidadeTerritorios = conteTerritoriosPorContinente (jogador, continente);
		
		if (quantidadeTerritorios >= this.continenteMaioria[continente] 
				&& quantidadeTerritorios < this.continenteTotalidade[continente]) {
			
			result = true;
		}

		return result;
	}	
	
	public bool possuiTotalidade(Jogador jogador, Continente continente) {
		
		return (conteTerritoriosPorContinente (jogador, continente) == this.continenteTotalidade[continente]);
	}	
	
}
